#!/bin/bash

# 设置终端编码为UTF-8
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

echo "正在启动单摆实验平台..."

# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

echo ""
echo "1. 启动后端服务器..."
cd "$SCRIPT_DIR"

# 检查Python是否安装
if ! command -v python3 &> /dev/null; then
    echo "错误: 未找到Python3，请先安装Python3"
    exit 1
fi

# 启动后端服务器（在后台运行）
echo "启动后端服务器..."
python3 "Z_Project12。2_整理/__main__.py" &
BACKEND_PID=$!

echo "后端服务器已启动，PID: $BACKEND_PID"

echo ""
echo "2. 等待后端启动..."
sleep 3

echo ""
echo "3. 启动前端服务器..."
cd "$SCRIPT_DIR/web集成"

# 启动前端HTTP服务器（在后台运行）
echo "启动前端服务器..."
python3 -m http.server 8080 &
FRONTEND_PID=$!

echo "前端服务器已启动，PID: $FRONTEND_PID"

echo ""
echo "4. 等待前端启动..."
sleep 2

echo ""
echo "启动完成！"
echo "后端地址: http://127.0.0.1:5001"
echo "前端地址: http://127.0.0.1:8080"
echo "WebSocket地址: ws://127.0.0.1:5001"
echo ""
echo "正在自动打开浏览器..."
open http://127.0.0.1:8080

echo ""
echo "服务已启动，按 Ctrl+C 停止所有服务"

# 创建停止脚本的函数
cleanup() {
    echo ""
    echo "正在停止服务..."
    
    # 停止后端服务器
    if kill -0 $BACKEND_PID 2>/dev/null; then
        echo "停止后端服务器 (PID: $BACKEND_PID)..."
        kill $BACKEND_PID
    fi
    
    # 停止前端服务器
    if kill -0 $FRONTEND_PID 2>/dev/null; then
        echo "停止前端服务器 (PID: $FRONTEND_PID)..."
        kill $FRONTEND_PID
    fi
    
    echo "所有服务已停止"
    exit 0
}

# 设置信号处理，当用户按Ctrl+C时调用cleanup函数
trap cleanup SIGINT SIGTERM

# 等待用户中断
echo "服务运行中，按 Ctrl+C 停止..."
wait 